Repository navigation
fix: align tools with live TimeTree behavior and add holiday lookup - #37
Merged
Merged
Conversation
Verified against a live account and the web app: - Event and memo URLs are stored in attachment.url; the top-level url was silently ignored. Writes now map url into the attachment. - TimeTree rejects checklist: [] with HTTP 400; null clears it. - Partial attachment updates drop fields inconsistently, so updates now fetch the event (single-event GET) and send merged fields. - calendar_id accepts strings or numbers in every tool, matching the string IDs list_calendars returns. - get_events sorts by start time and gains start_before, query, label_id, and include_memos filters. - New get_holidays tool backed by the v2 memorial days endpoint. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
I ran all 18 tools against a live account and compared the results with what the TimeTree web app shows and sends. This PR fixes the mismatches that comparison found and adds the most useful gaps.
Type of Change
Changes Made
Fixes
urland stores the link inattachment.url.create_event,update_event, and the memo tools now write it there. An empty string removes the URL.checklist: []returned HTTP 400. TimeTree rejects an empty array, and the web app clears a checklist by omitting it. The client now sendsnull, which clears it.urldropped the checklist, but sending only the checklist kept the URL. When an update touches the attachment, the client now fetches the event with the single-eventGET /calendar/{id}/event/{uuid}and sends the merged fields. The delete fallback uses the same endpoint instead of a full calendar sync.calendar_idtypes.get_eventsandget_updated_eventsaccepted only strings, and the other 14 tools accepted only numbers.list_calendarsreturns strings, so passing its IDs through failed on most tools. All tools now accept either type.Additions
get_eventssorts results by start time, solimitnow returns the earliest matching events instead of the first ones in API order. It also adds thestart_before,query,label_id, andinclude_memosfilters. The web app's search runs client-side on synced events, so this matches how the web app searches.get_holidaystool backed byGET /api/v2/memorialdays, which the web app uses to draw holidays. It takes up to 5 countries and a range of up to 2 years, and can exclude observances that fall on working days.Testing
[MCP-TEST]prefix, and everything was deleted afterwards."". The checklist is kept across URL edits and cleared with[]. The same holds for memos.calendar_idboth work, and theget_eventsfilters and sort order behave as described.get_holidaysfor KR in October 2026 returns Foundation Day, the substitute holiday, and Hangul Day. JP withdays_off_onlyalso works.get_eventsfilters and sort, stringcalendar_id, andget_holidaysvalidation.npm run verifypasses.Documentation
[Unreleased]Additional Notes
virtual_user_attendeeswith[]could not be verified live because the test calendar has no virtual members.[Unreleased]section to CHANGELOG, so whichever PR merges second needs a small merge.🤖 Generated with Claude Code